const fs = require('fs')

//  回调地狱  回调嵌套的问题 会导致代码难以维护 而且不方便错误处理
// fs.readFile('./2.age.txt', 'utf8', function(err, data) {
//   console.log(data)
//   fs.readFile('./2.name.txt', 'utf8', function(err, data) {
//     console.log(data)
//   })
// })

// 多个异步同时执行，在某一个时刻拿到最终的结果
let school = {}
// 哨兵函数
// function out() {
//   if(Object.keys(school).length === 2){
//     console.log(school)
//   } 
// }

// 高阶函数 闭包保存作用域
function after(times, cb) {
  return function() {
    if(--times === 0) {
      cb&&cb(school)
    }
  }
}

let out = after(2, function(res) {
  console.log(res)
})


fs.readFile('./2.age.txt', 'utf8', function(err, data) {
  school.age = data
  out()
})
fs.readFile('./2.name.txt', 'utf8', function(err, data) {
  school.name = data
  out()
})



